package com.jingdianjichi.oss.adapter;


import com.jingdianjichi.oss.entity.FileInfo;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;


/**
 * @Description: 文件存储的  适配器模式：解决 接口方法不兼容的问题
 *                  有的实现类仅需要 a、b方法；有的实现类仅需要b、c方法
 * @return:
 * @Author:  sky
 * @date:  2024/11/9 19:39
 */
public interface StorageAdapter {

    /**
     * @Description: 创建Bucket桶
     * @return:
     * @Author:  sky
     * @date:  2024/11/9 16:49
     */
    void createBucket(String bucket);


    void uploadFile(MultipartFile multipartFile, String bucket, String objectName);

    // 列出所有桶
    List<String> getAllBuckets();

    // 列出当前桶的所有文件
    List<FileInfo> getAllFile(String bucket);

    // 下载文件：存储桶、文件名，返回下载文件流
    InputStream downloadFile(String bucket, String objectName);

    // 删除桶
    void deleteBucket(String bucket);

    // 删除文件
    void deleteFile(String bucket, String objectName);

    String getUrl(String bucketName, String objectName);
}
